'''
程序目的：1、统计需要展示的数据；2、保存统计结果
'''

import pandas as pd
import datetime
import time

def DataCountAndOutput():

    '''1 统计需要展示的数据'''

    #  1-1 无用数据清理
    #       1-1-1 数据读取
    problem_list_all = pd.read_excel("D:\\5.大众品牌周报\\0.1问题清单\\清单合并-大众.xlsx")

    #       1-1-2 数据清理
    problem_list_all.drop(['问题类型', '分析人员\nAnalyst', '分析是否需要测量资源/措施需评估' \
                              , '问题原因\nUrsache', '负责\n人员\nZustaendig', '销项日期Geschlossen' \
                              , '分析周期Dauer', '需求分析时长', '优先级排序', '关注\nInteresse', '零件\nKaufenteile', '工艺\nProzess' \
                              , '设计\nDesign', '更改\nAenderung', 'C\nF\nT', '创新\nNeuerung', '临时措施需求', '难度\nSchwierigkeit' \
                              , '报告\nBericht', '缺陷车\nFehlerfahrzeug'], axis=1, inplace=True)
    print("合并清单去除无用列，完成！")

    problem_list_all.to_excel("D:\\5.大众品牌周报\\0.1问题清单\\大众品牌问题清单-去除无用列.xlsx", index=False)  # 保存数据：仅去除无用列

    #   1-2 数据整理，按需要的顺序保留需要的数据
    #       1-2-1 问题排序，将同一个问题，按照日期从早到晚排序，这样去重后悔保留日期最靠后的一列，为计算问题解决周期做预留                             T
    problem_list_all.sort_values(by=['模块', '序号\nNr.', '期\n限\nTermin'], ascending=[True, True, True], inplace=True)
    # problem_list_all_copy = problem_list_all.copy()#保留一份未去重数据，用于措施时长统计
    #       1-2-2 删除问题重复行
    problem_list_all.drop_duplicates(['问题描述\nProbleme'], keep='last', inplace=True)
    problem_list_all.to_excel("D:\\5.大众品牌周报\\0.1问题清单\\大众品牌问题清单-去重.xlsx", index=False)  # 数据备份

    #   1-3 数据统计


    print("*****************问题状态统计结果如下********************")  # 分隔线

    #       1-3-1 前端数据
    try:
        FrotendTayronGelb = \
        problem_list_all[problem_list_all['模块'] == '前端'][problem_list_all['车型'] == '探岳']['问题结项'].value_counts()[3]
    except:FrotendTayronGelb = 0

    try:
        FrotendTayronGreen = \
        problem_list_all[problem_list_all['模块'] == '前端'][problem_list_all['车型'] == '探岳']['问题结项'].value_counts()[5]
    except:
        FrotendTayronGreen =0

    try:
        FrotendCoupeGelb = \
        problem_list_all[problem_list_all['模块'] == '前端'][problem_list_all['车型'] == 'Coupe']['问题结项'].value_counts()[3]
    except:
        FrotendCoupeGelb = 0

    try:
        FrotendCoupeGreen = \
        problem_list_all[problem_list_all['模块'] == '前端'][problem_list_all['车型'] == 'Coupe']['问题结项'].value_counts()[5]
    except:
        FrotendCoupeGreen = 0

    try:
        FrotendGelbSum = problem_list_all[problem_list_all['模块'] == '前端']['问题结项'].value_counts()[3]
    except:FrotendGelbSum = 0

    try:
        FrotendGreenSum = problem_list_all[problem_list_all['模块'] == '前端']['问题结项'].value_counts()[5]
    except:FrotendGreenSum = 0

    #       1-3-2 后端数据

    try:
        HeckendTayronGelb = \
        problem_list_all[problem_list_all['模块'] == '后端'][problem_list_all['车型'] == '探岳']['问题结项'].value_counts()[3]
    except:
        HeckendTayronGelb = 0

    try:
        HeckendTayronGreen = \
        problem_list_all[problem_list_all['模块'] == '后端'][problem_list_all['车型'] == '探岳']['问题结项'].value_counts()[5]
    except:
        HeckendTayronGreen = 0

    try:
        HeckendCoupeGelb = \
        problem_list_all[problem_list_all['模块'] == '后端'][problem_list_all['车型'] == 'Coupe']['问题结项'].value_counts()[3]
    except:
        HeckendCoupeGelb = 0
    try:
        HeckendCoupeGreen = \
        problem_list_all[problem_list_all['模块'] == '后端'][problem_list_all['车型'] == 'Coupe']['问题结项'].value_counts()[5]
    except:
        HeckendCoupeGreen = 0

    try:
        HeckendGelbSum = problem_list_all[problem_list_all['模块'] == '后端']['问题结项'].value_counts()[3]
    except:
        HeckendGelbSum = 0

    try:
        HeckendGreenSum = problem_list_all[problem_list_all['模块'] == '后端']['问题结项'].value_counts()[5]
    except:
        HeckendGreenSum = 0


    #       1-3-3 车门数据
    try:
        TureTayronGelb = \
        problem_list_all[problem_list_all['模块'] == '车门'][problem_list_all['车型'] == '探岳']['问题结项'].value_counts()[3]
    except:
        TureTayronGelb = 0

    try:
        TureTayronGreen = \
        problem_list_all[problem_list_all['模块'] == '车门'][problem_list_all['车型'] == '探岳']['问题结项'].value_counts()[5]
    except:
        TureTayronGreen = 0

    try:
        TureCoupeGelb = \
        problem_list_all[problem_list_all['模块'] == '车门'][problem_list_all['车型'] == 'Coupe']['问题结项'].value_counts()[3]
    except:
        TureCoupeGelb = 0
    try:
        TureCoupeGreen = \
        problem_list_all[problem_list_all['模块'] == '车门'][problem_list_all['车型'] == 'Coupe']['问题结项'].value_counts()[5]
    except:
        TureCoupeGreen = 0

    try:
        TureGelbSum = problem_list_all[problem_list_all['模块'] == '车门']['问题结项'].value_counts()[3]
    except:
        TureGelbSum = 0
    try:
        TureGreenSum = problem_list_all[problem_list_all['模块'] == '车门']['问题结项'].value_counts()[5]
    except:
        TureGreenSum = 0

    #       1-3-4 内外饰数据
    try:
        InnenTayronGelb = \
        problem_list_all[problem_list_all['模块'] == '内外饰'][problem_list_all['车型'] == '探岳']['问题结项'].value_counts()[3]
    except:
        InnenTayronGelb = 0
    try:
        InnenTayronGreen = \
        problem_list_all[problem_list_all['模块'] == '内外饰'][problem_list_all['车型'] == '探岳']['问题结项'].value_counts()[5]
    except:
        InnenTayronGreen = 0

    try:
        InnenCoupeGelb = \
        problem_list_all[problem_list_all['模块'] == '内外饰'][problem_list_all['车型'] == 'Coupe']['问题结项'].value_counts()[3]
    except:
        InnenCoupeGelb = 0
    try:
        InnenCoupeGreen = \
        problem_list_all[problem_list_all['模块'] == '内外饰'][problem_list_all['车型'] == 'Coupe']['问题结项'].value_counts()[5]
    except:
        InnenCoupeGreen = 0

    try:
        InnenGelbSum = problem_list_all[problem_list_all['模块'] == '内外饰']['问题结项'].value_counts()[3]
    except:
        InnenGelbSum = 0
    try:
        InnenGreenSum = problem_list_all[problem_list_all['模块'] == '内外饰']['问题结项'].value_counts()[5]
    except:
        InnenGreenSum = 0
    #       1-3-5 统计结果输出
    print("前端数据：******************")
    print('前端-探岳-黄灯-问题个数：', FrotendTayronGelb)
    print('前端-探岳-绿灯-问题个数：', FrotendTayronGreen)
    print('前端-Coupe-黄灯-问题个数：', FrotendCoupeGelb)
    print('前端-Coupe-绿灯-问题个数：', FrotendCoupeGreen)
    print('前端-黄灯-总数：', FrotendGelbSum)
    print('前端-绿灯-总数：', FrotendGreenSum)

    print("后端数据：******************")
    print('后端-探岳-黄灯-问题个数：', HeckendTayronGelb)
    print('后端-探岳-绿灯-问题个数：', HeckendTayronGreen)
    print('后端-Coupe-黄灯-问题个数：', HeckendCoupeGelb)
    print('后端-Coupe-绿灯-问题个数：', HeckendCoupeGreen)
    print('后端-黄灯-总数：', HeckendGelbSum)
    print('后端-绿灯-总数：', HeckendGreenSum)

    print("车门数据：******************")
    print('车门-探岳-黄灯-问题个数：', TureTayronGelb)
    print('车门-探岳-绿灯-问题个数：', TureTayronGreen)
    print('车门-Coupe-黄灯-问题个数：', TureCoupeGelb)
    print('车门-Coupe-绿灯-问题个数：', TureCoupeGreen)
    print('车门-黄灯-总数：', TureGelbSum)
    print('车门-绿灯-总数：', TureGreenSum)

    print("内外饰数据：******************")
    print('内外饰-探岳-黄灯-问题个数：', InnenTayronGelb)
    print('内外饰-探岳-绿灯-问题个数：', InnenTayronGreen)
    print('内外饰-Coupe-黄灯-问题个数：', InnenCoupeGelb)
    print('内外饰-Coupe-绿灯-问题个数：', InnenCoupeGreen)
    print('内外饰-黄灯-总数：', InnenGelbSum)
    print('内外饰-绿灯-总数：', InnenGreenSum)

    '''2 数据保存到本地'''
    #   2-1 数据汇总计算,形成数据列表 AllProblemDate
    GelbSum = sum([FrotendTayronGelb, FrotendCoupeGelb, HeckendTayronGelb, HeckendCoupeGelb, TureTayronGelb, TureCoupeGelb, \
                   InnenTayronGelb, InnenCoupeGelb])
    GreenSum = sum(
        [FrotendTayronGreen, FrotendCoupeGreen, HeckendTayronGreen, HeckendCoupeGreen, TureTayronGreen, TureCoupeGreen, \
         InnenTayronGreen, InnenCoupeGreen])
    ProblemSum = GelbSum + GreenSum

    DoneRate = GreenSum / ProblemSum

    AllProblemDate = [DoneRate, ProblemSum, GelbSum, GreenSum, \
                      FrotendTayronGelb, FrotendTayronGreen, FrotendCoupeGelb, FrotendCoupeGreen, \
                      HeckendTayronGelb, HeckendTayronGreen, HeckendCoupeGelb, HeckendCoupeGreen, \
                      TureTayronGelb, TureTayronGreen, TureCoupeGelb, TureCoupeGreen, \
                      InnenTayronGelb, InnenTayronGreen, InnenCoupeGelb, InnenCoupeGreen]

    #   2-2数据更新写入
    #       2-2-1 获取当前周
    kwCurrent = "KW" + str(int(time.strftime("%U", time.localtime())) - 1)  # “-1”是为了纠正系统周与公司周差1的问题
    # print(kwCurrent)

    #       2-2-2 读取本地数据及备份
    df = pd.read_excel("D:\\5.大众品牌周报\\输出材料\\问题管理数据.xlsx")
    df.to_excel("D:\\5.大众品牌周报\\输出材料\\问题管理数据-" + kwCurrent + ".xlsx")  # 数据备份，加入当前周后存储
                                # print(df)

    #       2-2-3 当周数据更新到df
    df = df.set_index(keys='周名称', drop=False)  # 重置索引，将周名称作为索引，用于根据周定位需要写入数据的行位置
    df.loc[kwCurrent, ("解决率", "问题总数", "黄灯", "绿灯", \
                       "前端-探岳-黄灯", "前端-探岳-绿灯", "前端-Coupe-黄灯", "前端-Coupe-绿灯", \
                       "后端-探岳-黄灯", "后端-探岳-绿灯", "后端-Coupe-黄灯", "后端-Coupe-绿灯", \
                       "车门-探岳-黄灯", "车门-探岳-绿灯", "车门-Coupe-黄灯", "车门-Coupe-绿灯", \
                       "内饰-探岳-黄灯", "内饰-探岳-绿灯", "内饰-Coupe-黄灯", "内饰-Coupe-绿灯")] = AllProblemDate

    #      2-2-4数据输出到本地，不带索引
    df.to_excel("D:\\5.大众品牌周报\\输出材料\\问题管理数据.xlsx", index=False)
